// import com.alibaba.druid.sql.ast.SQLName*;
// import com.alibaba.druid.sql.ast.SQLObject_ptr ;
// import com.alibaba.druid.sql.ast.SQLObjectImpl;

#pragma once

#include "../../../ast/SQLObjectImpl.h"
#include "../../../ast/SQLName.h"
#include "../../../ast/SQLObject.h"
#include "OracleSegmentAttributes.h"

class OracleSegmentAttributesImpl
    : virtual public SQLObjectImpl,
      virtual public OracleSegmentAttributes
{
public:
  int pctfree;
  int pctused;
  int initrans;

  int maxtrans;
  int pctincrease;
  int freeLists;
  BOOL_ptr compress;
  int compressLevel;
  BOOL_ptr compressForOltp;
  int pctthreshold;

  BOOL_ptr logging;

  SQLName_ptr tablespace;
  SQLObject_ptr storage;

  SHAREDOBJECT(OracleSegmentAttributesImpl);
  SQLName_ptr getTablespace();

  void setTablespace(SQLName_ptr x);

  BOOL_ptr getCompress();

  void setCompress(BOOL_ptr compress);

  int getCompressLevel();

  void setCompressLevel(int compressLevel);

  int getPctthreshold();

  void setPctthreshold(int pctthreshold);

  int getPctfree();

  void setPctfree(int ptcfree);

  int getPctused();

  void setPctused(int ptcused);

  int getInitrans();

  void setInitrans(int initrans);

  int getMaxtrans();

  void setMaxtrans(int maxtrans);

  int getPctincrease();

  void setPctincrease(int pctincrease);

  int getFreeLists();

  void setFreeLists(int freeLists);

  BOOL_ptr getLogging();

  void setLogging(BOOL_ptr logging);

  SQLObject_ptr getStorage();

  void setStorage(SQLObject_ptr storage);

  BOOL_ptr isCompressForOltp();

  void setCompressForOltp(BOOL_ptr compressForOltp);

  void cloneTo(OracleSegmentAttributesImpl_ptr x);
};
